home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / bin / ptardiff < prev    next >
Text File  |  2009-10-01  |  3KB  |  116 lines

  1. #!/usr/bin/perl
  2.     eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
  3.     if $running_under_some_shell;
  4. #!/usr/bin/perl
  5.  
  6. use strict;
  7. use Archive::Tar;
  8. use Getopt::Std;
  9.  
  10. my $opts = {};
  11. getopts('h:', $opts) or die usage();
  12.  
  13. die usages() if $opts->{h};
  14.  
  15. ### need Text::Diff -- give a polite error (not a standard prereq)
  16. unless ( eval { require Text::Diff; Text::Diff->import; 1 } ) {
  17.     die "\n\t This tool requires the 'Text::Diff' module to be installed\n";
  18. }
  19.  
  20. my $arch = shift                        or die usage();
  21. my $tar  = Archive::Tar->new( $arch )   or die "Couldn't read '$arch': $!";
  22.  
  23.  
  24. foreach my $file ( $tar->get_files ) {
  25.     next unless $file->is_file;
  26.     my $name = $file->name;
  27.     
  28.     diff(   \($file->get_content), $name, 
  29.             {   FILENAME_A  => $name,
  30.                 MTIME_A     => $file->mtime,
  31.                 OUTPUT      => \*STDOUT
  32.             } 
  33.     );
  34. }
  35.  
  36.  
  37.  
  38.  
  39. sub usage {
  40.     return q[
  41.  
  42. Usage:  ptardiff ARCHIVE_FILE
  43.         ptardiff -h
  44.     
  45.     ptardiff is a small program that diffs an extracted archive
  46.     against an unextracted one, using the perl module Archive::Tar.
  47.     
  48.     This effectively lets you view changes made to an archives contents. 
  49.     
  50.     Provide the progam with an ARCHIVE_FILE and it will look up all
  51.     the files with in the archive, scan the current working directory
  52.     for a file with the name and diff it against the contents of the
  53.     archive.
  54.  
  55.     
  56. Options:
  57.     h   Prints this help message
  58.  
  59.  
  60. Sample Usage:
  61.  
  62.     $ tar -xzf Acme-Buffy-1.3.tar.gz 
  63.     $ vi Acme-Buffy-1.3/README
  64.     
  65.     [...]
  66.  
  67.     $ ptardiff Acme-Buffy-1.3.tar.gz > README.patch
  68.  
  69.  
  70. See Also:
  71.     tar(1)
  72.     ptar
  73.     Archive::Tar
  74.  
  75.     ] . $/;
  76. }    
  77.  
  78.  
  79.  
  80. =head1 NAME
  81.  
  82. ptardiff - program that diffs an extracted archive against an unextracted one
  83.  
  84. =head1 DESCRIPTION
  85.  
  86.     ptardiff is a small program that diffs an extracted archive
  87.     against an unextracted one, using the perl module Archive::Tar.
  88.     
  89.     This effectively lets you view changes made to an archives contents. 
  90.     
  91.     Provide the progam with an ARCHIVE_FILE and it will look up all
  92.     the files with in the archive, scan the current working directory
  93.     for a file with the name and diff it against the contents of the
  94.     archive.
  95.  
  96. =head1 SYNOPSIS
  97.  
  98.     ptardiff ARCHIVE_FILE
  99.     ptardiff -h
  100.  
  101.     $ tar -xzf Acme-Buffy-1.3.tar.gz 
  102.     $ vi Acme-Buffy-1.3/README
  103.     [...]
  104.     $ ptardiff Acme-Buffy-1.3.tar.gz > README.patch
  105.  
  106.  
  107. =head1 OPTIONS
  108.  
  109.     h   Prints this help message
  110.  
  111. =head1 SEE ALSO
  112.  
  113. tar(1), L<Archive::Tar>.
  114.  
  115. =cut
  116.